﻿#include <iostream>
using namespace std;

#define MaxSize 80
char matrix[MaxSize][MaxSize];		//由于这里不能直接用变量定义没有确定值的数组，所以用这样的方式定义

int main()
{
	int n = 0;
	char a, b;	//a 中心字符 b 外框字符
	bool firstCase = true;
	while (cin >> n >> a >> b)
	{

		if (firstCase)
		{
			firstCase = false;
		}
		else
		{
			cout << endl;
		}
		//n/2的位置一定是a
		//按环一个个确认
		int midNum = n / 2;		//中心点坐标，因为n为奇数，所以最终的结果是确定的。
		for (int i = 0; i <= midNum; i++)		//表示圈数
		{
			for (int j = i; j <= midNum * 2 - i; j++)			//表示当前圈的上边的起始点和结束点坐标
				//因为是每圈的四个边同时对称绘制，所以知道一组边的起始值即可
			{
				char c;		//记录这一轮绘制用哪个字符
				if ((midNum - i) % 2 == 0)	//圈数和中心点所在圈数，相差数值为偶数个，则其为中心字符
				{
					c = a;
				}
				else
				{
					c = b;
				}
				matrix[i][j] = c;	//正方行圈中的上边
				matrix[j][i] = c;	//正方行圈中的左边
				matrix[midNum * 2 - i][midNum * 2 - j] = c;		//正方行圈中的下边
				matrix[midNum * 2 - j][midNum * 2 - i] = c;		//正方行圈中的右边
			}
		}

		//n不是1就去除四角
		if (n != 1)
		{
			matrix[0][0] = ' ';
			matrix[0][n - 1] = ' ';
			matrix[n - 1][0] = ' ';
			matrix[n - 1][n - 1] = ' ';
		}

		
		//输出图形
		for (int i = 0; i < n; i++)
		{
			for (int j = 0; j < n; j++)
			{
				cout << matrix[i][j];
				matrix[i][j] = ' ';		//每输出一个点，就将该点置零。这样不影响后续小值图形的输出
			}
			cout << endl;
		}
	}
	return 0;
}

